package thread.localThread;

/**
 * 包装ThreadLocal对象,让外界不要直接操作ThreadLocal变量,仅通过静态方法获取 该线程专属对象。
 用途:
 * 1.对基本类型的数据的封装，这种应用相对很少见。
 * 2.对对象类型的数据的封装，比较常见，即让某个类针对不同线程分别创建一个独立的实例对象。
 *
 * Created by 4790K_NSL on 2017/4/20.
 */
public class MyThreadLocalData  {
    private MyThreadLocalData(){

    }

    private static ThreadLocal<MyThreadLocalData>  container=new ThreadLocal<>();

    public static MyThreadLocalData getDataOfMyThread(){
        MyThreadLocalData myData=container.get();
        if(myData==null){
            myData=new MyThreadLocalData();
            container.set(myData);
        }
        return container.get();
    }

    public static void clear(){
        container.remove();
    }

    Integer i;
    public void set(Integer i){
        this.i=i;
    }

    public Integer get(){
        return i;
    }


}


